MySQL het SELECT statement
Probleem
Nu we rijen aan de tabel Boeken hebben toegevoegd zijn we natuurlijk nieuwsgierig of de gegevens wel degelijk in de tabel staan.
Oplossing
Met het SELECT
statement kunnen we de inhoud van de tabel Boeken
opvragen. De rijen worden gertourneerd in tabelvorm:
select * from Boeken;
De asterix in het SELECT
statement is een joker (wildcard). Daarmee wordt aangegeven dat we alle kolommen in de tabel willen selecteren. Je kan ook de kolomnaam opgeven die je wilt selecteren:
use JefInghelbrecht; select Titel from Boeken;
In het resultaat venster zie je alleen de titels van de boeken.
Je kan ook meerdere kolommen opgeven die je door komma’s van elkaar scheidt:
use JefInghelbrecht; select Titel, Voornaam, Familienaam from Boeken;
De rijen worden in tabelvorm teruggegeven.
Als je intellisence wilt gebruiken kan je de naam van de tabel als prefix meegeven:
use JefInghelbrecht;
select Boeken.Titel, Boeken.Voornaam, Boeken.Familienaam from Boeken;
In het SELECT
statement kan je optionele clausules gebruiken. De meest gebruikte is ORDER BY
. Daarmee kan je de geselecteerd rijen orderen op één of meer kolommen. Bijvoorbeeld:
use JefInghelbrecht; select Voornaam, Familienaam, Titel from Boeken order by Familienaam, Titel;
De auteurs zijn alfabetische gerangschikt op familienaam. De auteur Beth heeft twee boeken en de titels ervan zijn ook alfabetisch geordend:
In een volgend hoofdstuk gaan uitgebreid in op de overige optionele clausules van het SELECT
statement met name WHERE
, GROUP BY
en HAVING
. Voorlopig houden we het bij de twee verplichte clausules SELECT
en FROM
en de veel gebruikte optionele clausule ORDER BY
.
Functies
-- ji -- 9 september 2013 -- bestandsnaam: BoekenSelectInitialenEnTitel.sql use JefInghelbrecht; select Titel, Voornaam, Familienaam from Boeken order by Titel; select Titel, Voornaam, Familienaam from Boeken order by Familienaam, Titel; -- om alleen de initalen te tonen, we starten -- met het eerste karakter en we nemen 1 karakter. -- Begint niet met 0, zoals je dat verwacht -- bij een array string in C# select Titel, substring(Voornaam, 1, 1), substring(Familienaam, 1, 1) from Boeken order by Familienaam, Titel; -- om de initialen en een punt erachter te tonen -- daarvoor gebruiken we 'string concatenation', -- het aan elkaar plakken van strings select Titel, substring(Voornaam, 1, 1) + '.' from Boeken order by Titel, Voornaam;
De AS clausule
Het SQL statement retourneert de initialen en de titel van het boek. Maar de koptekst van de kolom met initialen zegt niet veel.
-- JI -- Selecteer initialen en titel van het boek -- 17 maart 2016 use _12694JefInghelbrecht; select substring(Voornaam, 1, 1) + '.' + substring(Familienaam, 1, 1) + '.', Titel from Boeken;
We kunnen de AS
clausule gebruiken om een eigen leesbare kolomkop te geven aan een kolom. Als er spaties in de naam staan, zet je de naam tussen enkelvoudige aanhalingstekens.
-- JI -- Selecteer initialen en titel van het boek -- 17 maart 2016 use _12694JefInghelbrecht; select substring(Voornaam, 1, 1) + '.' + substring(Familienaam, 1, 1) + '.'as Initialen, Titel from Boeken;
SQL is een volwaardige programmeertaal. De vraag die ke kunt stellen is om zoiets client- for serverside moet gebeuren.